<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"  %>
<%@ page import="jxl.*" %>
<%@ page import="java.io.*" %>      
<!-- 파일 업로드 처리를 위한 MultipartRequest 객체를 임포트 -->    
<%@ page import="com.oreilly.servlet.MultipartRequest" %> 
<!-- 파일 중복처리 객체 임포트 -->
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %> 
<%@ page import="java.util.*" %>
<!-- jdbc 연동  -->
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>File Upload</title>
</head>
<body>

<%
	// jdbc 연동
	Connection con = null;
	Statement stmt = null;
	ResultSet rs = null;
	
	Class.forName("com.mysql.jdbc.Driver"); 		//jdbc driver load
	String url = "jdbc:mysql://localhost:3306/mydb";	//connect db
	String id = "son";
	String password = "0302";
	String tempSession = (String) session.getAttribute("session_id");
	
	int updateCount = 0;

    StringBuilder sb = new StringBuilder();
    StringBuilder search = new StringBuilder();
        
	//upload 위치
	String uploadPath = "C:/users/sonmc/";
	
	int size = 10 * 1024 * 1024;
	
	//String id = "";
	String name = "";
	//String filename = "";

	Workbook workbook = null;
	Sheet sheet = null;
	Cell cell = null;
	
try{
	con = DriverManager.getConnection(url, id, password);
	stmt = con.createStatement(); 			//to make the Statement for SQL
	
	// 파일 업로드 담당하는 부분, 폼에서 가져온 인자값을 얻기 위해request 객체 전달, 업로드 경로, 파일 최대 크기, 한글처리, 파일 중복처리
	MultipartRequest multi = new MultipartRequest(request, uploadPath, size, "utf-8", new DefaultFileRenamePolicy());		
	
	// 폼에서 입력한 값을 가져옴	
	id = multi.getParameter("uploadId");
	name = multi.getParameter("uploadName");
	
	// 업로드한 파일들을 Enumeration 타입으로 반환
	// Enumeration형은 데이터를 뽑아올때 유용한 인터페이스 Enumeration객체는 java.util 팩키지에 정의 되어있으므로
	// java.util.Enumeration을 import 시켜야 한다.
	Enumeration files = multi.getFileNames();
	
	String fName =(String) files.nextElement();	
	String orgName = multi.getFilesystemName(fName);	
	String  excelFile = "c:/users/sonmc/" + orgName;
	
	System.out.println("## : " + excelFile);
	
	//엑셀 파일을 인식
	workbook = Workbook.getWorkbook(new File(excelFile));
	
	//엑셀파일에 포함된 sheet의 배열을 리턴
	//workbook.getSheets();
	
	if(workbook != null){
		//엑셀파일에서 첫번째 Sheet를 인식
		sheet = workbook.getSheet(0);
		
		if(sheet != null){
			//셀인식 Cell a1 = sheet.getCell(컬럼 index, 열 index)
			//셀 내용 String stringa1 = a1.getContents();
			
			//기록물철의 경우 실제 데이터가 시작되는 Row 지정
			int nRowStartIndex = 0;
			//기록물철의 경우 실제 데이터가  끝  Row 지정		
			int nRowEndIndex   = sheet.getColumn(0).length - 1;
						
			//기록물철의 경우 실제 데이터가 시작되는 Column지정
		    int nColumnStartIndex = 0;
		    //기록물철의 경우 실제 데이터가 끝나는 Column지정
		    int nColumnEndIndex = sheet.getRow(0).length - 1;
		    
		    System.out.println("rowend : ");  
		    System.out.println(nRowEndIndex); 
		    System.out.println("colend : ");
		    System.out.println(nColumnEndIndex );
		     
		    String szValue = "";
		    String[] temp = new String[3];
		    
		    int count = 0;
		      	    		    
		    boolean abc = true;
	      
		    for( int nRow = nRowStartIndex; nRow <= nRowEndIndex; nRow++ ) {
			      for( int nColumn = nColumnStartIndex; nColumn <= nColumnEndIndex ; nColumn++) {
				       szValue = sheet.getCell(nColumn, nRow).getContents();
				       
				       temp[count++] = szValue;
		
				       System.out.print(szValue);
				       System.out.print( "\t" );
			      }
			      
			      search.append("SELECT   *     \n");
				  search.append(" FROM  ( mydb.members ) \n ");
				  //search.append("WHERE  ( member_id = 'kkk' ) \n");
				  search.append("WHERE  ( member_id =  '" + temp[1] + "' ) \n");
				  System.out.println("query = "+ search.toString());
				  rs = stmt.executeQuery(search.toString());
		
				    
			      while (rs.next()) {  //ID와 Password가 일치할 경우
			          abc = false;
			      }
			      
			      if (abc){
				      sb.append("INSERT INTO mydb.members \n");
				      sb.append("       ( email, member_id, member_name, update_time, user_id ) \n");
				      sb.append("VALUES ( '" + temp[0] + "', '" + temp[1] + "', '" + temp[2] + "', now(), '" + tempSession +  "')");
				      System.out.println("query = "+ sb.toString());
				      updateCount = stmt.executeUpdate(sb.toString());
			      }
			      
			      //초기화
			      count = 0;
			      temp = new String[3]; 
			      sb = new StringBuilder();
			      search = new StringBuilder();
			      abc = true;
		     	  System.out.println();
		     }
		} else {
		  	System.out.println( "Sheet is null!!" );
		}
	} else {
		 System.out.println( "WorkBook is null!!" );
	}

	
	
} catch(Exception e) {
	e.printStackTrace();
	throw e;
} finally {
	if(workbook != null)
		try { workbook.close(); } catch(Exception e) {};
    if (rs   != null)
        try { rs.close(); } catch(Exception e) {};	//JDBC 객체 연결 해제
    if (stmt != null)
        try { stmt.close(); } catch(Exception e) {};
    if (con  != null)
        try { con.close(); } catch(Exception e) {};
    response.sendRedirect("main.jsp");
	
}
		  
%>

</body>
</html>